home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / INESWIN.ZIP / CART.ASM next >
Assembly Source File  |  1996-05-07  |  12KB  |  535 lines

  1.  
  2.  
  3.  
  4.         ORG     0D000H
  5.         WIDTH   80
  6.  
  7.         ORG     0D000H  ;main program
  8.  
  9. REG0    EQU     00H     ;register for I/O port 2000H
  10. REG1    EQU     01H     ;......................2001H
  11. SELPRS  EQU     0AH     ;register for SWSEL
  12. SPCNT   EQU     0BH     ;.............SPMEET
  13. T816    EQU     0CH     ;.............SSP816
  14. XPOS    EQU     0D1H    ;.............SORG
  15. YPOS    EQU     0D2H    ;..................
  16. PAGE    EQU     0D3H    ;..................
  17. CLRSTRL EQU     0E1H    ;.............SCLRTB
  18. CLRSTRH EQU     0E2H    ;....................
  19. JSEL    EQU     0B5H    ;.............SJPRS
  20. JSTAS1  EQU     0B6H    ;..................
  21. JSTAS2  EQU     0B7H    ;..................
  22. JTEST   EQU     0B8H    ;.............SJTEST
  23. ADRH    EQU     0B1H    ;.............SDISP
  24. ADRL    EQU     0B2H    ;..................
  25. NUMR    EQU     0B3H    ;..................
  26. DSTRL   EQU     0C1H    ;..................
  27. DSTRH   EQU     0C2H    ;..................
  28. SND3    EQU     0A1H    ;.............SOU3
  29. SND4    EQU     0A2H    ;.............SOU4
  30. SND5    EQU     0A3H    ;.............SOU5
  31. MIC0    EQU     0A4H    ;.............SMIC
  32. MIC1    EQU     0A5H    ;.................
  33.  
  34.  
  35.         CLD
  36.         SEI
  37.         LDA     #00H
  38.         STA     2000H
  39.         STA     2001H
  40. L0      LDA     2002H
  41.         BPL     L0
  42.         JSR     SPRT
  43.         JMP     SCRT
  44. L1      LDA     2002H
  45.         BPL     L1
  46.         LDX     #0FFH
  47.         TXS
  48.  
  49.         LDA     #08H
  50.         STA     REG0
  51.         LDA     #0EH
  52.         STA     REG1
  53.         LDA     #00H
  54.         STA     JTEST
  55.         STA     T816
  56.  
  57.         LDA     #20H
  58.         STA     SND3    ;disable sound channel 3
  59.         STA     SND4    ;disable sound channel 4
  60.         LDA     #10H
  61.         STA     SND5    ;disable sound channel 5
  62.  
  63.         LDA     #00H
  64.         STA     SND5    ;enable sound channel 5
  65.  
  66.         LDA     #80H
  67.         STA     CLRSTRL
  68.         LDA     #0FFH
  69.         STA     CLRSTRH
  70.         JSR     SCLRTB
  71.  
  72.         JSR     SORG    ;set display original point
  73.  
  74.         LDA     REG0
  75.         ORA     #80H
  76.         STA     2000H
  77.  
  78.         JSR     STDLY   ;STDLY delay 1/2 sec
  79.         JSR     STDLY
  80.  
  81.         JSR     SCBAR   ;establish color bar
  82.         JSR     SCHXY   ;change display original point
  83.  
  84.         JSR     STDLY
  85.         JSR     STDLY
  86.         JSR     SORG
  87.  
  88.         JSR     SPMOT   ;sprite diagonal motion
  89.  
  90.         JSR     STDLY
  91.         JSR     SSP64
  92.  
  93.         JSR     STDLY
  94.         JSR     SSP816
  95.  
  96.         JSR     STDLY
  97.  
  98.  
  99.         JSR     SJTEST  ;joy stick test
  100.         INC     53H     ;loop operation
  101. L3      LDA     53H
  102.         BNE     L3
  103.  
  104. ;--------------------------------------------------------------
  105.  
  106.         ORG     0F000H  ;interrupt
  107.         PHA
  108.         TXA
  109.         PHA
  110.         TYA
  111.         PHA
  112.         LDA     #00H
  113.         STA     2003H
  114.         LDA     #02H
  115.         STA     4014H   ;sprite data DMA t0 PPU
  116.         LDA     REG1
  117.         STA     2001H
  118.  
  119.         JSR     SOU3
  120.         JSR     SOU4
  121.         JSR     SOU5
  122.  
  123.         LDA     #00H    ;joy stick 1
  124.         STA     JSEL
  125.         JSR     SJPRS   ;detect whether joy stick be pressed
  126.         LDA     #01H    ;joy stick 2
  127.         STA     JSEL
  128.         JSR     SJPRS
  129.  
  130.         JSR     SSELP   ;detect whether SEL be pressed
  131.  
  132.         LDA     T816    ;when test SP816, T816=#1
  133.         BNE     I2
  134.  
  135.         JSR     SSCROL  ;screen scrolling
  136.                         ;this SUB. will repeat trigger I/O addr.
  137.                                                        2000H
  138. I2      LDA     JTEST
  139.         CMP     #01H
  140.         BNE     I1
  141.  
  142.         LDA     #08H
  143.         STA     2000H
  144.         JSR     STWAIT
  145.         LDA     #00H
  146.         STA     2001H
  147.         JSR     SMIC    ;test MIC function
  148.         JSR     SJSTAS
  149.         LDA     #00H    ;relocated display original point
  150.         STA     2005H
  151.         STA     2005H
  152.         LDA     #88H
  153.         STA     2000H
  154.         LDA     #0EH
  155.         STA     2001H
  156.  
  157.  
  158. I1      PLA
  159.         TAY
  160.         PLA
  161.         TAX
  162.         PLA
  163.  
  164.         RTI
  165.  
  166. ;--------------------------------------------------------------
  167.  
  168.         ORG     0D200H  ;subroutine beginninng address
  169.  
  170. SPRT    LDX     #20H    ;PPU RAM test,PPU RAM assumed using
  171.         LDA     #00H                          page 1,3
  172.         STX     2006H
  173.         STA     2006H
  174.         LDY     #10H    ;think over changing value ?????
  175.         LDX     #00H
  176.         LDA     #0AAH
  177. P1      STA     2007H
  178.         INX
  179.         BNE     P1
  180.         DEY
  181.         BNE     P1
  182.  
  183.         LDY     #20H
  184.         LDX     #00H
  185. P2      STY     2006H
  186.         STX     2006H
  187.         LDA     2007H   ;first read open I/O 2007H read function
  188.         LDA     2007H
  189.         CMP     #0AAH
  190.         BNE     P3
  191.         STY     2006H
  192.         STX     2006H
  193.         LDA     #55H
  194.         STA     2007H
  195.  
  196.         STY     2006H
  197.         STX     2006H
  198.         LDA     2007H   ;first read open I/O 2007H read function
  199.         LDA     2007H
  200.         CMP     #55H
  201.         BNE     P3
  202.         INX
  203.         BNE     P2
  204.         INY
  205.         CPY     #24H    ;think over changing value ?????
  206.         BNE     P2
  207.  
  208.         LDY     #28H
  209.         LDX     #00H
  210. P5      STY     2006H
  211.         STX     2006H
  212.         LDA     2007H
  213.         LDA     2007H
  214.         CMP     #0AAH
  215.         BNE     P3
  216.         STY     2006H
  217.         STX     2006H
  218.         LDA     #55H
  219.         STA     2007H
  220.  
  221.         STY     2006H
  222.         STX     2006H
  223.         LDA     2007H
  224.         LDA     2007H
  225.         CMP     #55H
  226.         BNE     P3
  227.         INX
  228.         BNE     P5
  229.         INY
  230.         CPY     #2CH    ;think over changing value ?????
  231.         BNE     P5
  232.         JSR     SPROK
  233.         RTS
  234.  
  235. P3      JSR     SPRFL
  236.         RTS
  237.  
  238. ;-----SUB. CPU RAM  test---------------------------------------
  239.  
  240. SCRT    LDX     #00H
  241.         LDA     #0AAH
  242. C0      STA     00H,X
  243.         INX
  244.         BNE     C0
  245. C1      STA     100H,X
  246.         INX
  247.         BNE     C1
  248. C2      STA     200H,X
  249.         INX
  250.         BNE     C2
  251. C3      STA     300H,X
  252.         INX
  253.         BNE     C3
  254. C4      STA     400H,X
  255.         INX
  256.         BNE     C4
  257. C5      STA     500H,X
  258.         INX
  259.         BNE     C5
  260. C6      STA     600H,X
  261.         INX
  262.         BNE     C6
  263. C7      STA     700H,X
  264.         INX
  265.         BNE     C7
  266.  
  267. C10     LDA     00H,X
  268.         CMP     #0AAH
  269.         BNE     C8
  270.         LDA     #55H
  271.         STA     00H,X
  272.         LDA     00H,X
  273.         CMP     #55H
  274.         BNE     C8
  275.         INX
  276.         BNE     C10
  277.  
  278. C11     LDA     100H,X
  279.         CMP     #0AAH
  280.         BNE     C8
  281.         LDA     #55H
  282.         STA     100H,X
  283.         LDA     100H,X
  284.         CMP     #55H
  285.         BNE     C8
  286.         INX
  287.         BNE     C11
  288.  
  289.         BNE     C12
  290.  
  291. C13     LDA     300H,X
  292.         CMP     #0AAH
  293.         BNE     C8
  294.         LDA     #55H
  295.         STA     300H,X
  296.         LDA     300H,X
  297.         CMP     #55H
  298.         BNE     C8
  299.         INX
  300.         BNE     C13
  301.         JMP     C14
  302.  
  303. C8      JSR     SCRFL   ;C8 in this position has equal distance
  304.         JMP     L1                       from C10 and C17
  305.  
  306. C14     LDA     400H,X
  307.         CMP     #0AAH
  308.         BNE     C8
  309.         LDA     #55H
  310.         STA     400H,X
  311.         LDA     400H,X
  312.         CMP     #55H
  313.         BNE     C8
  314.         INX
  315.         BNE     C14
  316.  
  317. C15     LDA     500H,X
  318.         CMP     #0AAH
  319.         BNE     C8
  320.         LDA     #55H
  321.         STA     500H,X
  322.         LDA     500H,X
  323.         CMP     #55H
  324.         BNE     C8
  325.         INX
  326.         BNE     C15
  327.  
  328. C16     LDA     600H,X
  329.         CMP     #0AAH
  330.         BNE     C8
  331.         LDA     #55H
  332.         STA     600H,X
  333.         LDA     600H,X
  334.         CMP     #55H
  335.         BNE     C8
  336.         INX
  337.         BNE     C16
  338.  
  339. C17     LDA     700H,X
  340.         CMP     #0AAH
  341.         BNE     C8
  342.         LDA     #55H
  343.         STA     700H,X
  344.         LDA     700H,X
  345.         CMP     #55H
  346.         BNE     C8
  347.         INX
  348.         BNE     C17
  349.  
  350.         JSR     SCROK
  351.         JMP     L1
  352.  
  353. ;-------SUB. color table filled--------------------------------
  354.  
  355. SCLRTB  LDA     #00H    ;color table filled
  356.         STA     2001H
  357.         LDY     #00H
  358.         LDX     #3FH
  359.         LDA     #00H
  360.         STX     2006H
  361.         STA     2006H
  362. CL1     LDA     (CLRSTRL),Y
  363.         STA     2007H
  364.         INY
  365.         CPY     #1CH    ;total 28 byte
  366.         BNE     CL1
  367.         RTS
  368.  
  369. ;-------SUB. time delay----------------------------------------
  370.  
  371. STDLY   LDX     #20H    ;delay 1/2 sec
  372. T1      JSR     STWAIT
  373.         DEX
  374.         BNE     T1
  375.         RTS
  376.  
  377. ;-------SUB. time waiting for 1 blanking-----------------------
  378.  
  379. STWAIT  LDA     2002H   ;waiting 1/60 sec
  380.         BMI     STWAIT
  381. ST1     LDA     2002H
  382.         BPL     ST1
  383.         RTS
  384.  
  385. ;-------SUB. detect whether joy stick be pressed---------------
  386.  
  387. SJPRS   LDX     JSEL    ;joy stick 1, JSEL=0
  388.                         ;joy stick 2, JSEL=1
  389.         LDA     #01H
  390.         STA     4016H
  391.         LDA     #00H
  392.         STA     4016H
  393.         STA     JSTAS1,X
  394.         LDY     #07H
  395. J1      LDA     4016H,X
  396.         AND     #01H
  397.         LSR     A
  398.         ROL     JSTAS1,X
  399.         DEY
  400.         BPL     J1
  401.         RTS
  402.  
  403. ;-------SUB. detect whether SEL be pressed---------------------
  404.  
  405. SSELP   LDA     JSTAS1  ;when SEL be pressed,SELPRS=#1
  406.         AND     #20H
  407.         BEQ     SE1
  408.         LDA     #01H
  409.         STA     SELPRS
  410. SE1     RTS
  411.  
  412. ;-------SUB. display PPURAM TEST OK title----------------------
  413.  
  414. SPROK   JSR     SCSCR   ;PPU RAM test OK
  415.         LDA     #21H
  416.         STA     ADRH
  417.         LDA     #06H
  418.         STA     ADRL
  419.         LDA     #10H
  420.         STA     NUMR
  421.         LDA     #0A0H
  422.         STA     DSTRL
  423.         LDA     #0FFH
  424.         STA     DSTRH
  425.         JSR     SDISP
  426.         RTS
  427.  
  428. ;-------SUB. display PPURAM TEST FAIL title--------------------
  429.  
  430. SPRFL   JSR     SCSCR   ;PPU RAM test fail
  431.         LDA     #21H
  432.         STA     ADRH
  433.         LDA     #6CH
  434.         STA     ADRL
  435.         LDA     #10H
  436.         STA     NUMR
  437.         LDA     #0B0H
  438.         STA     DSTRL
  439.         LDA     #0FFH
  440.         STA     DSTRH
  441.         JSR     SDISP
  442.  
  443.         JSR     SFAIL
  444. RF1     JMP     RF1     ;when test fail program halt
  445.         RTS
  446.  
  447. ;-------SUB. RAM test fail ,display red screen-----------------
  448.  
  449. SFAIL   LDA     #80H
  450.         STA     CLRSTRL
  451.         LDA     #0FFH
  452.         STA     CLRSTRH
  453.         JSR     SCLRTB
  454.  
  455.         LDX     #3FH
  456.         LDA     #00H
  457.         JSR     SADR
  458.         LDA     #16H
  459.         STA     2007H
  460.  
  461.         JSR     SORG
  462.         LD
  463. ter-------------------------
  464.  
  465. SDISP   LDX     ADRH    ;screen starting address
  466.         LDA     ADRL
  467.         STX     2006H
  468.         STA     2006H
  469.         LDY     #00H
  470. D1      LDA     (DSTRL),Y       ;data
  471.         STA     2007H
  472.         INY             ;str
  473.         BNE                                                                                -----------
  474.  
  475. SCSCR   LDX     #20H    ;clear screen
  476.         LDA     #00H
  477.         STX     2006H
  478.         STA     2006H
  479.         LDY     #10H    ;clear 4 page
  480.         LDX     #00H
  481. PN1     STA     2007H
  482.         INX
  483.         BNE     PN
  484.  
  485. ;-------SUB. display CPURAM TEST OK title----------------------
  486.  
  487. SCROK   LDA     #21H    ;CPU RAM test OK
  488.         STA     ADRH
  489.         LDA     #0C6H
  490.         STA     ADRL
  491.         LDA     #10H
  492.         STA     NUMR
  493.         LDA     #0C0H
  494.         STA     DSTRL
  495.         LDA     #0FFH
  496.         STA     DSTRH
  497.         JSR     SDISP
  498.         RTS
  499.  
  500. ;-------SUB. display CPURAM TEST FAIL title--------------------
  501.  
  502. SCRFL   LDA     #22H    ;CPU RAM test fail
  503.         STA     ADRH
  504.         LDA     #2CH
  505.         STA     ADRL
  506.         LDA     #10H
  507.         STA     NUMR
  508.         LDA     #0D0H
  509.         STA     DSTRL
  510.         LDA     #0FFH
  511.         STA     DSTRH
  512.         JSR     SDISP
  513.  
  514.         JSR     SFAIL
  515. RF2     JMP     RF2
  516. * bar on 1st page & 256 patterns on the 4th page----
  517.  
  518. SCBAR   LDA     REG1    ;establish color bar
  519.         AND     #0F7H   ;disable TEXT
  520.         STA     2001H
  521.         LDA     REG0
  522.         AND     #7FH
  523.         STA     2000H
  524.  
  525.         JSR     SOU1
  526.  
  527.         LDX     #20H
  528.         LDA     #00H
  529.         STX     2006H
  530.         STA     2006H
  531.         LDY     #78H
  532. L11     LDA     #01H
  533.  
  534. 
  535.